// 项目启动时用到的函数

package tokyo_main

import (
    "fmt"
    "time"
    "bytes"

    "net/http"
    "io/ioutil"
    "encoding/json"

    "tokyo/common"
    "tokyo/core"
)


// 系统定时向节点出题
func PostQues()  {
    seq := 0
    time.Sleep(3 * time.Second)
    for {
        // 生成随机字符串
        randStr := core.GetRandStr()
        // 生成密文
        strDark := core.GetHashCode(randStr)

        // 定义题目
        var question common.Question
        seq += 1
        question.Seq = seq
        question.DarkText = strDark
        // 真是一个神奇的日期时间！
        nowStr := time.Now().Format("2006-01-02 15:04:05")
        question.AskTime = nowStr

        // 向每个节点出题
        for _, v := range common.NodeArray[:common.NodeCount] {
            // 定义请求地址
            url := fmt.Sprintf("http://%s:8080/get_question", v)

            // 定义content_type
            contentType := "application/json"

            // 序列化成reader
            b, _ := json.Marshal(question)
            reader := bytes.NewReader(b)

            // 发送请求
            resp, err := http.Post(url, contentType, reader)
            if err != nil {
                fmt.Println("发送请求失败")
                fmt.Println(err.Error())
                continue
            }

            // 获取响应
            respByte, _ := ioutil.ReadAll(resp.Body)
            respStr := string(respByte)
            if respStr == "success" {
                fmt.Println(v, "出题成功！")
            }
        }

        time.Sleep(10 * time.Second)
    }
}
